package config

import (
	"gopkg.in/yaml.v3"
	"io/ioutil"
	"log"
)

// Config 应用程序配置结构
type Config struct {
	Database  DatabaseConfig `yaml:"database"`
	Server    Server         `yaml:"server"`
	StaticDir string         `yaml:"staticDir"` // 静态资源目录
	StaticUrl string         `yaml:"staticUrl"` // 静态资源 URL
}

// DatabaseConfig 数据库相关配置
type DatabaseConfig struct {
	Dialect  string `yaml:"dialect"`  // 数据库类型（如 mysql）
	Host     string `yaml:"host"`     // 主机地址
	Port     int    `yaml:"port"`     // 端口号
	Username string `yaml:"username"` // 用户名
	Password string `yaml:"password"` // 密码
	DBName   string `yaml:"dbname"`   // 数据库名称
	Charset  string `yaml:"charset"`  // 字符集
}

type Server struct {
	Port string `yaml:"port"`
}

// LoadConfig 加载配置文件
func LoadConfig(path string) *Config {
	data, err := ioutil.ReadFile(path)
	if err != nil {
		log.Fatalf("Failed to read config file: %v", err)
	}

	var cfg Config
	if err := yaml.Unmarshal(data, &cfg); err != nil {
		log.Fatalf("Failed to parse config file: %v", err)
	}

	return &cfg
}

func LoadLocal() *Config {
	return LoadConfig("config/config.yaml")
}
